define(function (require, exports, module) {
    if (window.top !== window.self) {
        document.write = '';
        window.top.location.href = window.self.location.href;
        setTimeout(function () {
            document.body.innerHTML = '';
        }, 0);
    }

    function reloadPage(win) {
        var location = win.location;
        location.href = location.pathname + location.search;
    }

    //判断显示或创建iframe
    function iframeJudge(options) {
        var elem = options.elem,
            href = options.href,
            id = options.id,
            li = $('#B_history li[data-id=' + id + ']');
        if (li.length > 0) {
            //如果是已经存在的iframe，则显示并让选项卡高亮,并不显示loading
            var iframe = $('#iframe_' + id);
            $('#loading').hide();
            li.addClass('current');
            try {
                if (iframe[0].contentWindow && iframe[0].contentWindow.location.href !== href) {
                    iframe[0].contentWindow.location.href = href;
                }
            } catch (e) {

            }
            $('#B_frame iframe').hide();
            $('#iframe_' + id).show();
            showTab(li);//计算此tab的位置，如果不在屏幕内，则移动导航位置
        } else {
            //创建一个并加以标识
            var iframeAttr = {
                src: href,
                id: 'iframe_' + id,
                frameborder: '0',
                scrolling: 'auto',
                height: '100%',
                width: '100%'
            };
            var iframe = $('<iframe/>').prop(iframeAttr).appendTo('#B_frame');

            $(iframe[0].contentWindow.document).ready(function () {
                $('#B_frame iframe').hide();
                $('#loading').hide();
                var li = $('<li tabindex="0"><span><a>' + elem.html() + '</a><a class="del" title="关闭此页">关闭</a></span></li>').attr('data-id', id).addClass('current');
                li.siblings().removeClass('current');
                li.appendTo('#B_history');
                showTab(li);//计算此tab的位置，如果不在屏幕内，则移动导航位置
                //$(this).show().unbind('load');
            });
        }
    }


    //显示顶部导航时作位置判断，点击左边菜单、上一tab、下一tab时公用
    function showTab(li) {
        if (li.length) {
            var ul = $('#B_history'),
                li_offset = li.offset(),
                li_width = li.outerWidth(true),
                next_left = $('#J_next').offset().left - 9,//右边按钮的界限位置
                prev_right = $('#J_prev').offset().left + $('#J_prev').outerWidth(true);//左边按钮的界限位置
            //如果将要移动的元素在不可见的右边，则需要移动
            if (li_offset.left + li_width > next_left) {
                //计算当前父元素的右边距离，算出右移多少像素
                var distance = li_offset.left + li_width - next_left;
                ul.animate({left: '-=' + distance}, 200, 'swing');
            } else if (li_offset.left < prev_right) {//如果将要移动的元素在不可见的左边，则需要移动
                var distance = prev_right - li_offset.left;//计算当前父元素的左边距离，算出左移多少像素
                ul.animate({left: '+=' + distance}, 200, 'swing');
            }
            li.trigger('click');
        }
    }


    //设置顶部导航
    function setMenuMain(elem) {
        elem.parent().addClass('current').siblings().removeClass('current');
    };

    //设置左侧导航
    function setMenuSide(data, id, par, level, href) {
        var arr = [],			//左侧一级导航数据
            child_arr = [];		//左侧二级导航数据
        //循环数据
        $.each(data, function (i, o) {
            var cls = (o.id == id ? 'current' : '');
            //添加一级数据
            arr.push('<dt class="' + cls + '"><a href="' + o.url + '" data-id="' + o.id + '">' + o.name + '</a></dt>');
            if (level == 3 && i == par) {
                //进入二级导航
                $.each(o['items'], function (i, o) {
                    child_arr.push('<li><a href="' + o.url + '" data-id="' + o.id + '">' + o.name + '</a></li>');
                });
                var style = (o.id == par ? '' : 'display:none;');
                //并入一级
                arr.push('<dd style="' + style + '"><ul>' + child_arr.join('') + '</ul></dd>');
            }
        });
        //show_left_menu(data_list['items']);
        par_menu_side.html(arr.join('')).attr('data-id', par);
        var side_item = $('#B_menubar').find('a[data-id=' + id + ']');
        //点击导航展开iframe
        iframeJudge({
            elem: side_item,
            href: href,
            id: id
        });
    };

    exports.init = function () {
        //一级菜单展示
        var html = [];
        $.each(SUBMENU_CONFIG, function (i, o) {
            html.push('<li><a href=""  data-id="' + o.id + '">' + o.name + '</a></li>');
        });
        $('#J_B_main_block').html(html.join(''));
        //后台位在第一个导航
        $('#J_B_main_block li:first > a').click();

        //一级导航点击
        $('#J_B_main_block').on('click', 'a', function (e) {
            e.preventDefault();
            e.stopPropagation();
            $(this).parent().addClass('current').siblings().removeClass('current');
            var data_id = $(this).attr('data-id'), data_list = SUBMENU_CONFIG[data_id], html = [], child_html = [],
                child_index = 0, B_menubar = $('#B_menubar');
            if (B_menubar.attr('data-id') == data_id) {
                return false;
            }
            ;
            show_left_menu(data_list['items']);
            B_menubar.html(html.join('')).attr('data-id', data_id);
            //显示左侧菜单
            function show_left_menu(data) {
                for (var attr in data) {
                    if (data[attr] && typeof (data[attr]) === 'object') {
                        //循环子对象
                        if (!data[attr].url && attr === 'items') {
                            //子菜单添加识别属性
                            $.each(data[attr], function (i, o) {
                                child_index++;
                                o.isChild = true;
                                o.child_index = child_index;
                            });
                        }
                        show_left_menu(data[attr]); //继续执行循环(筛选子菜单)
                    } else {
                        if (attr === 'name') {
                            data.url = data.url ? data.url : '#';
                            if (!(data['isChild'])) {
                                //一级菜单
                                html.push('<dt><a href="' + data.url + '" data-id="' + data.id + '">' + data.name + '</a></dt>');
                            } else {
                                //二级菜单
                                child_html.push('<li><a href="' + data.url + '" data-id="' + data.id + '">' + data.name + '</a></li>');
                                //二级菜单全部push完毕
                                if (data.child_index == child_index) {
                                    html.push('<dd style="display:none;"><ul>' + child_html.join('') + '</ul></dd>');
                                    child_html = [];
                                }
                            }
                        }
                    }
                }
            };
        });

        //左边菜单点击
        $('#B_menubar').on('click', 'a', function (e) {
            e.preventDefault();
            e.stopPropagation();
            var $this = $(this), _dt = $this.parent(), _dd = _dt.next('dd');
            //当前菜单状态
            _dt.addClass('current').siblings('dt.current').removeClass('current');
            //子菜单显示&隐藏
            if (_dd.length) {
                _dt.toggleClass('current');
                _dd.toggle();
                return false;
            }
            ;
            $('#loading').show().focus();//显示loading
            $('#B_history li').removeClass('current');
            var data_id = $(this).attr('data-id'), li = $('#B_history li[data-id=' + data_id + ']');
            var href = this.href;
            iframeJudge({
                elem: $this,
                href: href,
                id: data_id
            });
        });

        //顶部点击一个tab页
        $('#B_history').on('click focus', 'li', function (e) {
            e.preventDefault();
            e.stopPropagation();
            var data_id = $(this).data('id');
            $(this).addClass('current').siblings('li').removeClass('current');
            $('#iframe_' + data_id).show().siblings('iframe').hide();//隐藏其它iframe
        });

        //顶部关闭一个tab页
        $('#B_history').on('click', 'a.del', function (e) {
            e.stopPropagation();
            e.preventDefault();
            var li = $(this).parent().parent(),
                prev_li = li.prev('li'),
                data_id = li.attr('data-id');
            li.hide(60, function () {
                $(this).remove();//移除选项卡
                $('#iframe_' + data_id).remove();//移除iframe页面
                var current_li = $('#B_history li.current');
                //找到关闭后当前应该显示的选项卡
                current_li = current_li.length ? current_li : prev_li;
                current_li.addClass('current');
                cur_data_id = current_li.attr('data-id');
                $('#iframe_' + cur_data_id).show();
            });
        });

        //刷新
        $('#J_refresh').click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            var id = $('#B_history .current').attr('data-id'), iframe = $('#iframe_' + id);
            if (iframe[0].contentWindow) {
                reloadPage(iframe[0].contentWindow);
            }
        });

        //全屏/非全屏
        $('#J_fullScreen').toggle(function (e) {
            e.preventDefault();
            e.stopPropagation();
            $(document.body).addClass('fullScreen');
        }, function () {
            $(document.body).removeClass('fullScreen');
        });

        //下一个选项卡
        $('#J_next').click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            var ul = $('#B_history'),
                current = ul.find('.current'),
                li = current.next('li');
            showTab(li);
        });

        //上一个选项卡
        $('#J_prev').click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            var ul = $('#B_history'),
                current = ul.find('.current'),
                li = current.prev('li');
            showTab(li);
        });


        //iframe内触发菜单
        var par_menu_main = $('#J_B_main_block'),
            par_menu_side = $('#B_menubar')
        //查询导航数据
        window.eachSubmenu = function (data, id, par, level, href) {
            for (i in data) {
                if (level == 2) {
                    if (i == par) {
                        //一级
                        setMenuMain(par_menu_main.find('a[data-id=' + par + ']'));
                        eachSubmenu(data[par]['items'], id, par, level, href);
                        break;
                    } else if (i == id) {
                        //二级
                        setMenuSide(data, id, par, level, href);
                    }

                } else if (level == 3) {
                    if (i == par) {
                        //匹配父导航
                        var root = data[i]['parent'];
                        setMenuMain(par_menu_main.find('a[data-id=' + data[i]['parent'] + ']'));
                        setMenuSide(SUBMENU_CONFIG[root]['items'], id, par, level, href);
                        break;
                    } else {
                        //父导航不匹配
                        var items = data[i]['items'];
                        if (items) {
                            eachSubmenu(items, id, par, level, href)
                        }

                    }
                }
            }
        };
        //iframe页面f5刷新
        $(document).on('keydown', function (event) {
            var e = window.event || event;
            if (e.keyCode == 116) {
                e.keyCode = 0;
                var $doc = $(parent.window.document),
                    id = $doc.find('#B_history .current').attr('data-id'),
                    iframe = $doc.find('#iframe_' + id);
                if (iframe[0].contentWindow) {
                    //common.js
                    reloadPage(iframe[0].contentWindow);
                }
                /*!ie*/
                return false;
            }
        });
    }
}); 